Custom Login এবং Logout পেজ কনফিগার করা

Java Technologies - স্প্রিং সিকিউরিটি (Spring Security) - Spring Security এর Form-Based Authentication
161

স্প্রিং সিকিউরিটির ডিফল্ট লগইন এবং লগআউট পেজ খুবই সাধারণ। প্রায়ই এই পেজগুলোকে কাস্টমাইজ করে অ্যাপ্লিকেশনের প্রয়োজন অনুযায়ী ডিজাইন করা হয়। নিচে কাস্টম লগইন এবং লগআউট পেজ কনফিগার করার জন্য ধাপে ধাপে নির্দেশনা দেওয়া হলো।


১. Maven/Gradle ডিপেন্ডেন্সি

Maven

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
</dependencies>

Gradle

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
}

২. Custom Security Configuration

SecurityConfig ক্লাস তৈরি করুন

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/login", "/logout", "/css/**", "/js/**").permitAll()
                .anyRequest().authenticated()
            )
            .formLogin(form -> form
                .loginPage("/login")        // Custom Login Page URL
                .loginProcessingUrl("/perform_login") // Form Action URL
                .defaultSuccessUrl("/home", true) // Redirect After Login
                .failureUrl("/login?error=true") // Redirect on Login Failure
                .permitAll()
            )
            .logout(logout -> logout
                .logoutUrl("/perform_logout") // Custom Logout URL
                .logoutSuccessUrl("/login?logout=true") // Redirect After Logout
                .deleteCookies("JSESSIONID") // Invalidate Session
                .permitAll()
            );
        return http.build();
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder(); // Password Encryption
    }
}

৩. Custom Login Controller

Controller তৈরি করুন

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class LoginController {

    @GetMapping("/login")
    public String login() {
        return "login";
    }

    @GetMapping("/home")
    public String home() {
        return "home";
    }
}

৪. Custom Login পেজ (Thymeleaf)

login.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Login</title>
</head>
<body>
    <h2>Login</h2>
    <form th:action="@{/perform_login}" method="post">
        <div>
            <label for="username">Username:</label>
            <input type="text" id="username" name="username" required>
        </div>
        <div>
            <label for="password">Password:</label>
            <input type="password" id="password" name="password" required>
        </div>
        <div>
            <button type="submit">Login</button>
        </div>
        <div>
            <p th:if="${param.error}" style="color: red;">Invalid username or password</p>
            <p th:if="${param.logout}" style="color: green;">You have been logged out successfully</p>
        </div>
    </form>
</body>
</html>

৫. Custom Logout পেজ (Optional)

logout.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Logout</title>
</head>
<body>
    <h2>You have been logged out successfully.</h2>
    <a th:href="@{/login}">Go to Login Page</a>
</body>
</html>

৬. Home পেজ (After Login Redirect)

home.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Home</title>
</head>
<body>
    <h2>Welcome to the Home Page</h2>
    <a th:href="@{/perform_logout}">Logout</a>
</body>
</html>

৭. Application রান করার পর

  1. অ্যাপ্লিকেশন চালু করুন এবং ব্রাউজারে http://localhost:8080/login এ যান।
    আপনি কাস্টম লগইন পেজ দেখতে পাবেন।
  2. লগইন সফল হলে এটি আপনাকে /home পেজে রিডাইরেক্ট করবে।
  3. লগআউট লিংকে ক্লিক করলে এটি আপনাকে /login?logout=true পেজে নিয়ে যাবে।

৮. সংক্ষেপে কাস্টমাইজেশনের সুবিধা

  • UI উন্নতকরণ: ডিফল্ট পেজ পরিবর্তন করে নিজের ডিজাইন ব্যবহার করতে পারবেন।
  • লগইন/লগআউট প্রক্রিয়ার নিয়ন্ত্রণ: ফর্মের অ্যাকশন এবং রিডাইরেকশন কাস্টমাইজ করা যাবে।
  • সেশন ম্যানেজমেন্ট: লগআউটের সময় সেশন মেয়াদ শেষ করার নিয়ন্ত্রণ থাকবে।

উপসংহার

কাস্টম লগইন এবং লগআউট পেজ কনফিগার করা স্প্রিং সিকিউরিটির একটি গুরুত্বপূর্ণ বৈশিষ্ট্য। এটি ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে এবং অ্যাপ্লিকেশনকে আরও সুরক্ষিত করতে সাহায্য করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...